library(tidyverse)
library(shinydashboardPlus)
library(shinydashboard)
library(plotly)

sourceDirectory <- function(pathToFolder=paste(getwd(),"/R/",sep = "")){
  for (x in list.files(pathToFolder)){
    source(file.path(pathToFolder, x))}}

if(xfun::dir_exists("R")==TRUE){
  sourceDirectory()
  print(".R directory found and sourced")
}else{
  print("No .R directory found")}
[1] ".R directory found and sourced"
Cyber1 <- advancedCyberPrep(Data = CyberAdv_file1 , ComponentSplit = "Package")
Error in min(Data$PanelId) - 1 : non-numeric argument to binary operator
data_frame("A" = c(0,0,0,0,1,0,6) ,"B" = c(0,0,0,1,0,5,0), "C" = c(0,0,1,0,4,0,15),
                                      "D" = c(0,1,0,3,0,10,0),"E" = c(1,0,2,0,6,0,20),"F" = c(0,1,0,3,0,10,0),
                                      "G" = c(0,0,1,0,4,0,15),"H" = c(0,0,0,1,0,5,0), "I" = c(0,0,0,0,1,0,6))
Lens1GroupSubset <- Lens1 %>% filter(Package %in% list(4,5,6))
Lens1GrpSubCompSumm <- Lens1GroupSubset%>%group_by(Location)%>%
    dplyr::summarise("PosX(mm)"=mean(`PosX(mm)`),"PosY(mm)"=mean(`PosY(mm)`),"Package"=mean(Package),count =n())
Graph <- ggplot(data = Lens1GrpSubCompSumm, mapping = aes(x = `PosX(mm)`,y = `PosY(mm)`, label = `Location`)) + 
  #geom_point() + 
  geom_text(aes(color=factor(`Package`)),size=4,check_overlap = TRUE)
#Graph
ggplotly(Graph)
testList <- as.list(sort(unique(Lens1$Package)))
LS0tDQp0aXRsZTogIkhlYXRtQXBwIFRlc3QgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7ciBMaWJyYXJpZXN9DQoNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShzaGlueWRhc2hib2FyZFBsdXMpDQpsaWJyYXJ5KHNoaW55ZGFzaGJvYXJkKQ0KbGlicmFyeShwbG90bHkpDQoNCmBgYA0KDQpgYGB7ciBMb2FkIEZ1bmN0aW9uc30NCg0Kc291cmNlRGlyZWN0b3J5IDwtIGZ1bmN0aW9uKHBhdGhUb0ZvbGRlcj1wYXN0ZShnZXR3ZCgpLCIvUi8iLHNlcCA9ICIiKSl7DQogIGZvciAoeCBpbiBsaXN0LmZpbGVzKHBhdGhUb0ZvbGRlcikpew0KICAgIHNvdXJjZShmaWxlLnBhdGgocGF0aFRvRm9sZGVyLCB4KSl9fQ0KDQppZih4ZnVuOjpkaXJfZXhpc3RzKCJSIik9PVRSVUUpew0KICBzb3VyY2VEaXJlY3RvcnkoKQ0KICBwcmludCgiLlIgZGlyZWN0b3J5IGZvdW5kIGFuZCBzb3VyY2VkIikNCn1lbHNlew0KICBwcmludCgiTm8gLlIgZGlyZWN0b3J5IGZvdW5kIil9DQpgYGANCg0KYGBge3IgTG9hZCBEYXRhLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCBlcnJvcj1UUlVFLCB3YXJuaW5nPUZBTFNFfQ0KDQojQ1NWbGlzdCA8LSBhcy5saXN0KGRpcigicmVzb3VyY2VzL1Rlc3REYXRhIikpDQoNCiNsZW5zU3RhbmRhcmRPdXRwdXQgPC0gcmVhZF9jc3YoInJlc291cmNlcy9UZXN0RGF0YS9sZW5zU3RhbmRhcmRPdXRwdXQuY3N2IikNCg0KTGVuc1NRTF9maWxlMSA8LSByZWFkX2NzdigicmVzb3VyY2VzL1Rlc3REYXRhL1J1bjFfTGVuc1NRTC5jc3YiKQ0KTGVuc1NRTF9maWxlMiA8LSByZWFkX2NzdigicmVzb3VyY2VzL1Rlc3REYXRhL1NRTDIzOTktNDAwYmxpc3RyZTIuY3N2IikNCg0KQ3liZXJBZHZfZmlsZTEgPC0gcmVhZF9jc3YoInJlc291cmNlcy9UZXN0RGF0YS9SdW4yX0FkdmFuY2VkQ3liZXIuY3N2Iixjb2xfdHlwZXMgPSBjb2xzKFBhbmVsSWQgPSBjb2xfbnVtYmVyKCkpKQ0KYGBgDQoNCmBgYHtyIFByb2Nlc3MgRGF0YX0NCkxlbnMxIDwtIGFkdmFuY2VkTGVuc1ByZXAoRGF0YSA9IExlbnNTUUxfZmlsZTEgLCBDb21wb25lbnRTcGxpdCA9ICJHcm91cCIpDQpMZW5zMiA8LSBhZHZhbmNlZExlbnNQcmVwKERhdGEgPSBMZW5zU1FMX2ZpbGUyICwgQ29tcG9uZW50U3BsaXQgPSAiR3JvdXAiKQ0KDQpDeWJlcjEgPC0gYWR2YW5jZWRDeWJlclByZXAoRGF0YSA9IEN5YmVyQWR2X2ZpbGUxICwgQ29tcG9uZW50U3BsaXQgPSAiUGFja2FnZSIpDQpgYGANCg0KYGBge3J9DQpkYXRhX2ZyYW1lKCJBIiA9IGMoMCwwLDAsMCwxLDAsNikgLCJCIiA9IGMoMCwwLDAsMSwwLDUsMCksICJDIiA9IGMoMCwwLDEsMCw0LDAsMTUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRCIgPSBjKDAsMSwwLDMsMCwxMCwwKSwiRSIgPSBjKDEsMCwyLDAsNiwwLDIwKSwiRiIgPSBjKDAsMSwwLDMsMCwxMCwwKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkciID0gYygwLDAsMSwwLDQsMCwxNSksIkgiID0gYygwLDAsMCwxLDAsNSwwKSwgIkkiID0gYygwLDAsMCwwLDEsMCw2KSkNCmBgYA0KDQpgYGB7cn0NCkxlbnMxR3JvdXBTdWJzZXQgPC0gTGVuczEgJT4lIGZpbHRlcihQYWNrYWdlICVpbiUgbGlzdCg0LDUsNikpDQpMZW5zMUdycFN1YkNvbXBTdW1tIDwtIExlbnMxR3JvdXBTdWJzZXQlPiVncm91cF9ieShMb2NhdGlvbiklPiUNCiAgICBkcGx5cjo6c3VtbWFyaXNlKCJQb3NYKG1tKSI9bWVhbihgUG9zWChtbSlgKSwiUG9zWShtbSkiPW1lYW4oYFBvc1kobW0pYCksIlBhY2thZ2UiPW1lYW4oUGFja2FnZSksY291bnQgPW4oKSkNCmBgYA0KDQpgYGB7cn0NCkdyYXBoIDwtIGdncGxvdChkYXRhID0gTGVuczFHcnBTdWJDb21wU3VtbSwgbWFwcGluZyA9IGFlcyh4ID0gYFBvc1gobW0pYCx5ID0gYFBvc1kobW0pYCwgbGFiZWwgPSBgTG9jYXRpb25gKSkgKyANCiAgI2dlb21fcG9pbnQoKSArIA0KICBnZW9tX3RleHQoYWVzKGNvbG9yPWZhY3RvcihgUGFja2FnZWApKSxzaXplPTQsY2hlY2tfb3ZlcmxhcCA9IFRSVUUpDQojR3JhcGgNCmdncGxvdGx5KEdyYXBoKQ0KYGBgDQoNCmBgYHtyfQ0KdGVzdExpc3QgPC0gYXMubGlzdChzb3J0KHVuaXF1ZShMZW5zMSRQYWNrYWdlKSkpDQoNCmBgYA0KDQpgYGB7cn0NCg0KYGBgDQoNCmBgYHtyfQ0KDQpgYGANCg0KYGBge3J9DQoNCmBgYA0KDQpgYGB7cn0NCg0KYGBgDQoNCmBgYHtyfQ0KDQpgYGANCg0KYGBge3J9DQoNCmBgYA==